home *** CD-ROM | disk | FTP | other *** search
/ PCMania 73 / PCMania CD73_1.iso / sharewar / utiles / viff / viff.h < prev    next >
C/C++ Source or Header  |  1998-02-18  |  4KB  |  163 lines

  1. /************************* -*- Mode: C -*- *****************************
  2.  *
  3.  * viff.h -- common header file for viff files
  4.  *
  5.  * Copyright (C) 1996-1998 Richard Flamsholt S0rensen.  All rights reserved.
  6.  *
  7.  * Author          : Richard Flamsholt S0rensen
  8.  * Created On      : Wed Dec 18 16:08:57 1996
  9.  * Last Modified By: Richard Flamsholt S0rensen
  10.  * Last Modified On: Wed Feb 18 14:02:18 1998
  11.  * Update Count    : 55
  12.  * Revision History: None
  13.  *
  14.  * COMMENTS
  15.  * HISTORY
  16.  **********************************************************************/
  17.  
  18. #if   defined(UNIX)
  19. # define PLATFORM "Unix"
  20. #elif defined(MSDOS)
  21. # define PLATFORM "DOS"
  22. #elif defined(WIN32)
  23. # define PLATFORM "Win32"
  24. #else
  25. # error No platform specified
  26. #endif
  27.  
  28. #if   defined(BC31)
  29. # define COMPILER "BC"
  30. #elif defined(MSVC)
  31. # define COMPILER "MSVC"
  32. #elif defined(DJGPP)
  33. # define COMPILER "djgpp"
  34. #elif defined(SCO)
  35. # define COMPILER "cc"
  36. #else
  37. # error No compiler specified
  38. #endif
  39.  
  40. #ifdef MSVC
  41. /* disable warning about a bitmask-packing in PDcurses */
  42. #pragma warning(disable:4121)
  43. #include <curses.h>
  44. #pragma warning(default:4121)
  45. #else
  46. #include <curses.h>
  47. #endif
  48.  
  49. typedef int BOOLEAN;
  50. #ifndef TRUE
  51. #define TRUE    1
  52. #endif
  53. #ifndef FALSE
  54. #define FALSE   0
  55. #endif
  56.  
  57. #include "viffutil.h"
  58.  
  59. #define VERSION         "v2.11"
  60. #define DIFFCMD        "diff"
  61. #ifndef FILENAME_MAX    /* some stdio.h's may not define this */
  62. #define FILENAME_MAX    256
  63. #endif
  64.  
  65. #ifdef UNIX
  66. #define SEPCHAR         '/'        /* path separator (\dir\file) */
  67. #define PATHSEP         ":"        /* separator in PATH variable */
  68. #else
  69. #define SEPCHAR         '\\'
  70. #define PATHSEP         ";"
  71. #endif
  72.  
  73. #define MIN(x,y)        ((x)<(y)?(x):(y))
  74. #define MAX(x,y)        ((x)<(y)?(y):(x))
  75. #define ARRAYSIZE(x)    ((sizeof(x)/sizeof(*(x))))
  76.  
  77. #ifndef KEY_ESCAPE
  78. #define KEY_ESCAPE      0x1b
  79. #endif
  80. #ifndef KEY_END
  81. #define KEY_END         0x166     /* at least on PDcurses it is */
  82. #endif
  83. #ifndef KEY_DELETE
  84. #define KEY_DELETE    0x7f
  85. #endif
  86. #define KEYRETURN(key)    ((key)=='\n' || (key)=='\r')
  87. #define KEYABORT(key)    ((key)==KEY_ESCAPE || (key)==KEYCTRL('G'))
  88. #define KEYCTRL(key)    ((key)-'A'+1)
  89. /*### accept more chars! */
  90. #define PRINTABLE_CHAR(ch) \
  91.     ((ch)=='\t' || (ch) >= 0x20 && (ch) != KEY_DELETE)
  92. /*    ((ch)=='\t' || 0x20<=((ch)&0x7f) && (ch)!=0x7f && (ch)<0x100) */
  93.  
  94. #define INPUT_NUMERIC    0x01
  95.  
  96. #define STATUSLINES    1
  97. #define VIEWLINES    (LINES-STATUSLINES)
  98. #define SCROLLSIGHT    3
  99. #define PAGELINES    (VIEWLINES-SCROLLSIGHT)  /* pgup/dn: n lines overlap */
  100. #define DIFFSIGHT    2
  101.  
  102. typedef enum {                          /* keep real text <= COMMON */
  103.   DIFF, COMMON, TOPSEP, MIDSEP, BOTSEP
  104. } LINETYPE;
  105. #define SYSLINE(line)           (COMMON < (LINETYPE)(line)->type)
  106.  
  107. typedef struct {
  108.   char *txt;                /* not asciiz string; see len */
  109.   int len;                /* length of line */
  110.   int room;                /* allocated space for txt */
  111.   int line1;
  112.   int line2;
  113.   unsigned incl  : 1;
  114.   unsigned broken: 1;
  115.   unsigned new   : 1;
  116.   unsigned type  : 3;            /* system or plain text line */
  117. } LINE;
  118.  
  119. extern char *viffdate;
  120.  
  121. extern chtype viff_attr;
  122. extern chtype edit_attr;
  123. extern chtype status_attr;
  124.  
  125. extern int topln;
  126. extern int diffbeg, diffmid, diffend;
  127. extern LINE *linetbl;
  128. extern int nline;
  129. extern int linetblsiz;
  130. extern int tabwidth;
  131. extern BOOLEAN modified;
  132. extern int Scrollx;
  133.  
  134. extern BOOLEAN curses_on;
  135.  
  136. extern char *diffcmd;
  137. extern char *options;
  138. extern BOOLEAN verbose;
  139. extern BOOLEAN report;
  140. extern BOOLEAN brief_report;
  141. extern BOOLEAN ignoreheaders;
  142. extern BOOLEAN monochrome;
  143.  
  144. #define STATUS_RATING   0x01
  145. #define STATUS_HELP     0x02
  146. void statusline(unsigned flags, const char *fmt, ...);
  147. int vstatusline(unsigned flags, const char *fmt, va_list varg);
  148.  
  149. BOOLEAN confirm_quit(void);
  150. void edit_statusline(LINE *line, int memx, int winx);
  151. void statusline_info(void);
  152. void help(char *text[], int nlines);
  153. void set_topline(int ln);
  154. void putline(int ln);
  155. void goto_curr_diff(BOOLEAN center);
  156. void goto_nearest_diff(int ln);
  157.  
  158. extern void init_edit_mode(void);
  159. extern void edit_mode(void);
  160. extern void goto_next_page(void);
  161. extern void goto_prev_page(void);
  162. extern void search(int search_key);
  163.